package 中国.珍林.AI.图片.分类.Servlet;

import jakarta.annotation.Resource;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import 中国.易.工具.Json工具;
import 中国.易.工具.Servlet工具;
import 中国.易.服务器.servlet.A批量_无传输对象;
import 中国.珍林.AI.图片.分类.对象.关系_图片_标签;
import 中国.珍林.AI.图片.分类.对象.标签;
import 中国.珍林.AI.图片.分类.服务.接口.I关系_图片_标签服务;
import 中国.珍林.AI.图片.分类.服务.接口.I标签服务;

import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;

@Log4j2
@WebServlet(urlPatterns = "/分类搜图")
public class 分类搜图接口 extends HttpServlet
{
    @Resource
    private I标签服务 标签服务;

    @Resource
    private I关系_图片_标签服务 关系_图片_标签服务;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException
    {
        A批量_无传输对象.Get返回<前端展示对象> fh = new A批量_无传输对象.Get返回<>();
        String s = req.getParameter("文字");
        if (StringUtils.isBlank(s))
        {
            Servlet工具.返回内容(resp, Json工具.对象转字符串(fh), log);
            return;
        }

        int 大小 = Servlet工具.获取url参数4int(req, "大小", 10, log);
        int 开始 = Servlet工具.获取url参数4int(req, "开始", 10, log);

        String[] ss = s.split(",");
        List<标签> bqlist = 标签服务.查询所有();
        List<Integer> ids = new ArrayList<>();
        for (标签 bq : bqlist)
        {
            if (ArrayUtils.contains(ss, bq.get名称()))
            {
                ids.add(bq.getId());
            }
        }
        关系_图片_标签.过滤条件 tj = new 关系_图片_标签.过滤条件();
        tj.set标签_id_在其中(ids);
        Number n = 关系_图片_标签服务.统计总数(tj);
        if (n.intValue() == 0)
        {
            Servlet工具.返回内容(resp, Json工具.对象转字符串(fh), log);
            return;
        }
        List<关系_图片_标签> gxList = 关系_图片_标签服务.查询列表(开始, 大小, tj);

        fh.总量 = n.intValue();
        fh.对象列表 = new ArrayList<>(大小);
        for (关系_图片_标签 gx : gxList)
        {
            前端展示对象 dx = new 前端展示对象();
            dx.名称 = gx.get图片().get文件名();
            dx.缩略图 = "缩略图?路径=" + URLEncoder.encode(gx.get图片().get本地地址(), StandardCharsets.UTF_8);
            dx.分数 = gx.get分数();
            fh.对象列表.add(dx);
        }

        Servlet工具.返回内容(resp, Json工具.对象转字符串(fh), log);
    }

    public static class 前端展示对象
    {
        public String 缩略图;

        public String 名称;

        public double 分数;
    }
}
